package com.zmm.book.keep.service;

import com.zmm.book.keep.model.Bill;
import com.zmm.book.keep.vo.BillConsumeDetailVo;
import com.zmm.book.keep.vo.BillResultVo;
import com.zmm.book.keep.vo.DetailParamVo;
import com.zmm.common.base.model.Query;
import com.zmm.util.document.register.CheckPermission;
import com.zmm.util.document.register.Param;

import java.util.List;

/**
 * @author 900045
 * @description:
 * @name BillService
 * @date By 2021-09-28 10:12:44
 */
public interface BillService {
	
	/**
	 * 保存账单记录
	 * @author: 900045
	 * @date: 2021-09-28 17:47:25
	 * @throws 
	 * @param bill: 
	 * @return: boolean
	 **/
	boolean saveBill(Bill bill);
	
	/**
	 * 更新账单记录
	 * @author: 900045
	 * @date: 2021-10-08 16:32:12
	 * @throws 
	 * @param bill: 
	 * @return: boolean
	 **/
	boolean modifyBill(Bill bill);

	/**
	 * 查询全部的账单记录
	 * @author: 900045
	 * @date: 2021-09-30 09:05:30
	 * @throws 
	
	 * @return: java.util.List<com.zmm.book.keep.model.Bill>
	 **/
	List<Bill> findAllBill();

	/**
	 * 根据条件查询账单信息
	 * @author: 900045
	 * @date: 2021-09-30 09:10:56
	 * @throws 
	 * @param queryBill:
	 * @return: void
	 **/
	void queryBillList(Query<BillResultVo> queryBill);

	/**
	 * 根据ID 获取账单详情
	 * @author: 900045
	 * @date: 2021-10-08 16:39:10
	 * @throws 
	 * @param recordId: 
	 * @return: com.zmm.book.keep.model.Bill
	 **/
	@CheckPermission(description = "获取一条记录", statusCode = "0000", statusMessage = "成功",
			respClass = Bill.class)
	Bill findOneBill(@Param(description = "主键ID", required = true,version = "1.0.0") Integer recordId);

	/**
	 * 查询 账单消耗 统计
	 * @description:
	 * @author: Zebulon
	 * @date: 2021-10-08 22:38:36
	 * @param scope: 
	 * @param detailParamVo:
	 * @return: com.zmm.book.keep.vo.BillConsumeDetailVo
	 **/
	@CheckPermission(description = "条件查询", statusCode = "0000", statusMessage = "成功", respClass = BillConsumeDetailVo.class)
    BillConsumeDetailVo findBillDetail(@Param(description = "查询时间类型", required = true, version = "1.0.0")Integer scope,
									   @Param(description = "查询参数", isClass = true, version = "1.0.0") DetailParamVo detailParamVo);
}
